/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.aspas.persistencia;

import br.com.aspas.modelo.Evento;
import br.com.aspas.modelo.PessoaFisica;
import br.com.aspas.modelo.PessoaJuridica;
import br.com.aspas.modelo.Recebimentos;
import br.com.aspas.util.AbstractDAO;
import javax.persistence.Query;

/**
 *
 * @author felipe
 */
public class RecebimentosDao extends AbstractDAO {

    public Recebimentos findRecebimento(PessoaFisica pessoaFisica, Evento evento) {
        em = emf.createEntityManager();
        Recebimentos recebimentos = null;
        try {
            Query query = em.createQuery("SELECT object(r) FROM Recebimentos as r "
                    + " where r.pessoaFisicaJuridicaEvento.pessoaFisica.codigo = ? and "
                    + " r.pessoaFisicaJuridicaEvento.evento.codigo = ? and"
                    + " r.status in ('A','P')");

            query.setParameter(1, pessoaFisica.getCodigo());
            query.setParameter(2, evento.getCodigo());

            return recebimentos = (Recebimentos) query.getSingleResult();

        } catch (Exception e) {
            recebimentos = null;
        } finally {
            em.close();
        }
        return null;
    }

    public void altera(Recebimentos recebimentos) {
        update(recebimentos);
    }

    public Long buscaQuantidadeCortesiasDireito(PessoaJuridica pessoaJuridica, Evento evento) {
        em = emf.createEntityManager();
        Query query = em.createQuery("SELECT COUNT(r) FROM Recebimentos r WHERE "
                + "r.pessoaFisicaJuridicaEvento.pessoaJuridica.codigo = :pessoaJuridica AND "
                + "r.pessoaFisicaJuridicaEvento.evento.codigo = :evento AND "
                + "r.caixa.codigo = 99908 AND r.status != 'C' ");
        query.setParameter("pessoaJuridica", pessoaJuridica.getCodigo());
        query.setParameter("evento", evento.getCodigo());
        Long quantidade = (Long) query.getSingleResult();
        em.close();
        return quantidade;
    }
}
